package basics.arrays;

import java.util.Arrays;

/**
 * Java 数组示例
 * 
 * 知识点：
 * 1. 数组基础
 *    - 数组是一种引用数据类型，用于存储同类型数据的集合
 *    - 数组一旦创建，长度固定不变
 *    - 数组元素在内存中连续存储
 *    - 数组下标从0开始
 * 
 * 2. 数组声明与创建
 *    - 声明：type[] arrayName 或 type arrayName[]
 *    - 创建：new type[length]
 *    - 声明并创建：type[] arrayName = new type[length]
 *    - 使用数组字面量：type[] arrayName = {value1, value2, ...}
 * 
 * 3. 数组访问与操作
 *    - 通过下标访问：arrayName[index]
 *    - 数组长度：arrayName.length
 *    - 数组遍历：for循环或增强型for循环
 * 
 * 4. 多维数组
 *    - 二维数组：type[][] arrayName = new type[rows][columns]
 *    - 不规则数组：每行长度可以不同
 *    - 多维数组遍历：嵌套循环
 * 
 * 5. 数组工具类
 *    - Arrays类提供了排序、搜索、填充、比较等实用方法
 *    - Arrays.sort()：排序
 *    - Arrays.toString()：转为字符串
 *    - Arrays.copyOf()：复制数组
 *    - Arrays.binarySearch()：二分查找
 */
public class ArrayDemo {
    public static void main(String[] args) {
        // 一维数组声明和初始化
        int[] numbers = new int[5];

        // 赋值
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = i * 10;
        }

        // 访问数组元素
        System.out.println("数组元素:");
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("numbers[" + i + "] = " + numbers[i]);
        }
        
        // 使用数组字面量初始化
        int[] scores = {95, 85, 75, 65, 55};
        
        // 使用增强型for循环
        System.out.println("使用增强型for循环:");
        for (int score : scores) {
            System.out.println("分数: " + score);
        }
        
        // 数组排序
        Arrays.sort(scores);
        System.out.println("排序后的数组: " + Arrays.toString(scores));
        
        // 二维数组
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        
        // 访问二维数组
        System.out.println("二维数组元素:");
        for (int row = 0; row < matrix.length; row++) {
            for (int col = 0; col < matrix[row].length; col++) {
                System.out.print(matrix[row][col] + " ");
            }
            System.out.println();
        }
        
        // 使用增强型for循环遍历二维数组
        System.out.println("使用增强型for循环遍历二维数组:");
        for (int[] row : matrix) {
            for (int value : row) {
                System.out.print(value + " ");
            }
            System.out.println();
        }

        float[] floatArray = new float[10];
        floatArray[9] = 0;
        for (int i = 0; i < floatArray.length - 1; i++) {
            floatArray[i] = i * 1.0f;
        }

        System.out.println("floatArray: " + Arrays.toString(floatArray));
    }
}